package cmd

import (
	"context"
	"github.com/gogf/gf/v2/os/gproc"
	"os"
	"sync"
)

var (
	//并发任务的同步控制，对main中需要控制的所有子服务进行限制，只有当全部关闭后主服务才能关闭
	serverWg = sync.WaitGroup{}

	serverCloseSignal = make(chan struct{}, 1)
)

// 进程退出信号的监听和设置回调处理
func signalListen(ctx context.Context, handler ...gproc.SigHandler) {
	go func() {
		gproc.AddSigHandlerShutdown(handler...) //进程退出信号的监听和对应回调函数注册
		//gproc.Listen()                          //Listen阻塞并执行信号侦听和处理。
	}()
}

// signalHandlerForOverall 关闭信号处理
func signalHandlerForOverall(sig os.Signal) {
	serverCloseSignal <- struct{}{}
}
